From b0e541a0aea3470796834eacdb70ca63e7ecb1fc Mon Sep 17 00:00:00 2001 From: Alex Williamson Date: Thu, 6 Sep 2007 12:57:13 -0600 Subject: [PATCH] [IA64] Add missing continuable destroy domain chunk Signed-off-by: Akio Takebe --- xen/arch/ia64/xen/mm.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/xen/arch/ia64/xen/mm.c b/xen/arch/ia64/xen/mm.c index c5b8a3fe3c..2e29f94a79 100644 --- a/xen/arch/ia64/xen/mm.c +++ b/xen/arch/ia64/xen/mm.c @@ -339,14 +339,22 @@ mm_teardown(struct domain* d) volatile pgd_t* pgd; if (mm->pgd == NULL) - return; + return 0; pgd = pgd_offset(mm, 0); for (i = 0; i < PTRS_PER_PGD; i++, pgd++) { - if (!pgd_present(*pgd)) // acquire semantics + unsigned long cur_offset = i << PGDIR_SHIFT; + + if (mm_teardown_can_skip(d, cur_offset + PGDIR_SIZE)) continue; - mm_teardown_pgd(d, pgd, i << PGDIR_SHIFT); + if (!pgd_present(*pgd)) { // acquire semantics + mm_teardown_update_offset(d, cur_offset); + continue; + } + if (mm_teardown_pgd(d, pgd, cur_offset)) + return -EAGAIN; } + return 0; } static void -- 2.30.2